package fr.expdev.bndd.data.sqlite;

import fr.expdev.bndd.data.Configuration;
import fr.expdev.bndd.data.Configuration.Key;
import fr.expdev.bndd.data.sqlite.BNDDSQLite.ConfigColumn;
import fr.expdev.bndd.data.sqlite.BNDDSQLite.Table;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.util.SparseArray;

public class ConfigSQLite extends ModelSQLite {

	public ConfigSQLite(Context context) {
		super(context);
	}
	
	/**
	 * Lecture complète de la table de configuration
	 * @return Le cursor qui peut parcourir tout
	 */
	public Cursor getConfigurationCursor() {
		Cursor c = db.query(Table.CONFIG.toString(), null, null, null, null, null, null);
		return c;
	}
	
	/**
	 * Mise à jour de plein de valeurs en même temps
	 * @param map Map des mises à jour
	 */
	public void set(SparseArray<String> map) {
		ContentValues content = new ContentValues();
		for(int i=0; i<map.size(); i++) {
			int intKey = map.keyAt(i);
			
			content.put(ConfigColumn.CONFIG_VALUE.toString(), map.get(intKey));
			
			db.update(Table.CONFIG.toString(), content, ConfigColumn.CONFIG_NAME + "=" + intKey, null);
		}
	}
	
	/**
	 * Mise à jour d'une valeur
	 * @param key Le nom de la valeur
	 * @param value La valeur
	 */
	public void set(Key key, String value) {
		ContentValues content = new ContentValues();
		content.put(ConfigColumn.CONFIG_VALUE.toString(), value);
		
		db.update(Table.CONFIG.toString(), content, ConfigColumn.CONFIG_NAME + "=" + key.intValue(), null);
	}
	
	/**
	 * Réinitialisation de la configration de base
	 * @param db
	 */
	public void resetConfiguration() {
		
		ContentValues values = new ContentValues();
		
		values.put(ConfigColumn.CONFIG_VALUE.toString() , "true");
		db.update(Table.CONFIG.toString(), values, ConfigColumn.CONFIG_NAME + "=" + Configuration.Key.AUTOREFRESH_ENABLED.intValue(), null);
		
		values.put(ConfigColumn.CONFIG_VALUE.toString() , "30");
		db.update(Table.CONFIG.toString(), values, ConfigColumn.CONFIG_NAME + "=" + Configuration.Key.AUTOREFRESH_INTERVAL.intValue(), null);
		
		values.put(ConfigColumn.CONFIG_VALUE.toString() , "false");
		db.update(Table.CONFIG.toString(), values, ConfigColumn.CONFIG_NAME + "=" + Configuration.Key.REFRESH_ATSTARTUP.intValue(), null);
	}

}
